/*
    This file is part of open-wars <http://code.google.com/p/open-wars/>.

    open-wars is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    open-wars is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with open-wars.  If not, see <http://www.gnu.org/licenses/>.
*/

#ifndef script_interface_h
#define script_interface_h

#include <common-datatypes.h>

#include <list>
#include <boost/any.hpp>

typedef void(*IScriptCallback)(boost::any);

class IScriptInterface
{
    public:
        virtual void Initialize				(void)                      { };
        virtual void Finalize				(void)                      { };
        virtual void LoadScript				(char *fileName)			{ };
        virtual void AddOnDebugPrint		(IScriptCallback callback)  { onDebugPrint.push_back(callback); };
        virtual void AddOnSetTitle			(IScriptCallback callback)  { onSetTitle.push_back(callback); };
		virtual void AddOnSetCurrentMouse	(IScriptCallback callback)  { onSetCurrentMouse.push_back(callback); };


        std::list<IScriptCallback> onDebugPrint;
        std::list<IScriptCallback> onSetTitle;
		std::list<IScriptCallback> onSetCurrentMouse;
};

#endif // script_interface_h
